package com.cuixichang.minimalism.domain;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cuixichang.minimalism.core.security.userdetails.CredentialDetail;
import com.cuixichang.minimalism.transfer.dto.IRoleDTO;

import java.util.List;

public interface IRoleCommandService {
    IRoleDTO insert(IRoleDTO roleDTO, CredentialDetail credentialDetail);
    Page<IRoleDTO> loginHasBindingRoles(IRoleDTO roleDTO, Long pageNo, Long pageSize,Long loginId, CredentialDetail credentialDetail);
    Page<IRoleDTO> menuHasBindingRoles(IRoleDTO roleDTO, Long pageNo, Long pageSize,Long menuId, CredentialDetail credentialDetail);
    Page<IRoleDTO> permissionHasBindingRoles(IRoleDTO roleDTO, Long pageNo, Long pageSize,Long permissionId, CredentialDetail credentialDetail);
    List<IRoleDTO> loginHasBindingRoles(IRoleDTO roleDTO,String systemCode,Long loginId, Long credentialLoginId);
    Page<IRoleDTO> loginUnBindingRoles(IRoleDTO roleDTO, Long pageNo, Long pageSize,Long loginId, CredentialDetail credentialDetail);
    Page<IRoleDTO> menuUnBindingRoles(IRoleDTO roleDTO, Long pageNo, Long pageSize,Long menuId, CredentialDetail credentialDetail);
    Page<IRoleDTO> permissionUnBindingRoles(IRoleDTO roleDTO, Long pageNo, Long pageSize,Long permissionId, CredentialDetail credentialDetail);
    boolean menuBindingStatus(Long roleId,Long menuId,boolean toBinding, CredentialDetail credentialDetail);
    List<IRoleDTO> selectDefaultRole(String systemCode);
    IRoleDTO selectByIdHasPreCheck(Long id,String systemCode, CredentialDetail credentialDetail);
    IRoleDTO selectByCodeHasPreCheck(String roleCode,String systemCode, CredentialDetail credentialDetail);
    boolean deleteByIdHasPreCheck(Long id,String systemCode, CredentialDetail credentialDetail);
    boolean updateByIdHasPreCheck(IRoleDTO roleDTO, CredentialDetail credentialDetail);
    Page<IRoleDTO> selectPageByConditional(IRoleDTO roleDTO,Long pageNo,Long pageSize, CredentialDetail credentialDetail);
    Page<IRoleDTO> routerHasBindingRoles(IRoleDTO roleDTO, Long pageNo, Long pageSize, Long routerId, CredentialDetail credentialDetail);
    Page<IRoleDTO> routerUnBindingRoles(IRoleDTO roleDTO, Long pageNo, Long pageSize, Long routerId, CredentialDetail credentialDetail);
}
